home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 February / Macworld (1999-02).dmg / Cinema 4D GO demo / Tex / Coffee-Shader / Checkerboard_c.cof next >
Text File  |  1998-03-06  |  2KB  |  75 lines

  1. FillData(data)
  2. {
  3.     // count
  4.     data->SetValue(0,10.0);
  5.     data->SetValue(1,10.0);
  6.  
  7.     // color 1
  8.     data->SetValue(2,1.0);
  9.     data->SetValue(3,0.0);
  10.     data->SetValue(4,0.0);
  11.  
  12.     // color 2
  13.     data->SetValue(5,0.0);
  14.     data->SetValue(6,0.0);
  15.     data->SetValue(7,1.0);
  16. }
  17.  
  18. EditData(data)
  19. {
  20.     // Make new dialog
  21.     var d=new(SimpleDialog);
  22.  
  23.     // Set edit fields of dialog
  24.     d->SetData(0,"x-count",FIELD_FLOAT,0.01,100000,data->GetValue(0));
  25.     d->SetData(1,"y-count",FIELD_FLOAT,0.01,100000,data->GetValue(1));
  26.  
  27.     d->SetData(2,"Red   1",FIELD_PERCENT,0.0,1.0,data->GetValue(2));
  28.     d->SetData(3,"Green 1",FIELD_PERCENT,0.0,1.0,data->GetValue(3));
  29.     d->SetData(4,"Blue  1",FIELD_PERCENT,0.0,1.0,data->GetValue(4));
  30.  
  31.     d->SetData(5,"Red   2",FIELD_PERCENT,0.0,1.0,data->GetValue(5));
  32.     d->SetData(6,"Green 2",FIELD_PERCENT,0.0,1.0,data->GetValue(6));
  33.     d->SetData(7,"Blue  2",FIELD_PERCENT,0.0,1.0,data->GetValue(7));
  34.  
  35.     d->SetTitle("Checkerboard");
  36.  
  37.     // start dialog
  38.     if (!d->DoDialog()) return FALSE;
  39.  
  40.     // if sucessful copy dialog values into key data
  41.     data->SetValue(0,d->GetData(0));
  42.     data->SetValue(1,d->GetData(1));
  43.  
  44.     data->SetValue(2,d->GetData(2));
  45.     data->SetValue(3,d->GetData(3));
  46.     data->SetValue(4,d->GetData(4));
  47.  
  48.     data->SetValue(5,d->GetData(5));
  49.     data->SetValue(6,d->GetData(6));
  50.     data->SetValue(7,d->GetData(7));
  51.  
  52.   return TRUE;
  53. }
  54.  
  55. GetOutput(data,p,n,time)
  56. {
  57.     var c,c1,c2;
  58.  
  59.     c1 = vector(data->GetValue(2),data->GetValue(3),data->GetValue(4));
  60.     c2 = vector(data->GetValue(5),data->GetValue(6),data->GetValue(7));
  61.  
  62.     p.x = p.x*data->GetValue(0); p.x = p.x-floor(p.x);
  63.     p.y = p.y*data->GetValue(1); p.y = p.y-floor(p.y);
  64.     if ((p.x>0.5)==(p.y>0.5))
  65.         c = c1;
  66.     else
  67.         c = c2;
  68.  
  69.     return c;
  70. }
  71.  
  72. main()
  73. {
  74.     RegisterChannelShader(30004,8,"FillData","EditData","GetOutput");
  75. }